const { spawn, exec } = require('child_process')

// 输入流参数
const inputStream = {
  // 直播流地址，例如RTMP地址
  rtmp: 'rtmp://localhost:1935/live/stream'
}

// 输出流参数
const outputStream = {
  // RTSP服务器地址和端口
  rtsp: 'rtsp://localhost:1936/live/stream'
}
 
// FFmpeg命令行参数
const ffmpegArgs = [
  '-re',
  // 输入流
  '-i', inputStream.rtmp,
  // 输出到RTSP服务器
  '-c', 'copy',
  '-f', 'rtsp',
  outputStream.rtsp
]

// 启动FFmpeg进程
const ffmpeg = spawn('ffmpeg', ffmpegArgs)

// 打印FFmpeg输出
ffmpeg.stdout.on('data', (data) => {
  console.log(`FFmpeg: ${data}`)
})

ffmpeg.stderr.on('data', (data) => {
  console.error(`FFmpeg error: ${data}`)
})

ffmpeg.on('close', (code) => {
  console.log(`FFmpeg process closed with code ${code}`)
})

// 处理SIGINT（例如，当用户按Ctrl+C时）以优雅地关闭FFmpeg进程
process.on('SIGINT', () => {
  ffmpeg.kill('SIGINT')
  process.exit()
})

/*
// FFmpeg命令行示例，将视频从MP4转换为WebM格式
const ffmpegCommand = 'ffmpeg -i input.mp4 output.webm';
 
exec(ffmpegCommand, (error, stdout, stderr) => {
  if (error) {
    console.error(`执行的错误: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.error(`stderr: ${stderr}`);
})
*/